// is passthrough

scsi_complete() {
  scsi_decide_disposition() {
    scsi_handle_queue_ramp_up();
  } /* scsi_decide_disposition */
  scsi_log_completion();
  scsi_finish_command() {
    scsi_device_unbusy() {
      scsi_dec_host_busy();
    } /* scsi_device_unbusy */
    scsi_io_completion() {
      scsi_end_request() {
        blk_update_request() {
          bio_endio() {
            bio_uninit();
            bio_copy_kern_endio_read() {
              bio_free_pages() {
                __free_pages() {
                  free_unref_page() {
                    free_unref_page_prepare() {
                      get_pfnblock_flags_mask();
                    } /* free_unref_page_prepare */
                    _raw_spin_trylock();
                    free_unref_page_commit();
                  } /* free_unref_page */
                } /* __free_pages */
              } /* bio_free_pages */
              bio_uninit();
              kfree() {
                __kmem_cache_free();
              } /* kfree */
            } /* bio_copy_kern_endio_read */
          } /* bio_endio */
        } /* blk_update_request */
        ktime_get();
        blk_stat_add();
        __rq_qos_done() {
          wbt_done();
        } /* __rq_qos_done */
        blk_end_sync_rq() {
          complete() {
            _raw_spin_lock_irqsave();
            _raw_spin_unlock_irqrestore();
          } /* complete */
        } /* blk_end_sync_rq */
        scsi_run_queue_async();
      } /* scsi_end_request */
    } /* scsi_io_completion */
  } /* scsi_finish_command */
}; /* scsi_complete */


// not passthrough
scsi_complete() {
  scsi_decide_disposition() {
    scsi_handle_queue_ramp_up();
  } /* scsi_decide_disposition */
  scsi_log_completion();
  scsi_finish_command() {
    scsi_device_unbusy() {
      scsi_dec_host_busy();
    } /* scsi_device_unbusy */
    sd_done [sd_mod]();
    scsi_io_completion() {
      scsi_end_request() {
        blk_update_request() {
          blk_account_io_completion.part.0();
          bio_endio() {
            __rq_qos_done_bio();
            bio_uninit();
            end_bio_bh_io_sync() {
              end_buffer_read_sync() {
                wake_up_bit() {
                  _raw_spin_lock_irqsave();
                  __wake_up_common() {
                    wake_bit_function() {
                      default_wake_function() {
                        try_to_wake_up() {
                          _raw_spin_lock_irqsave();
                          select_task_rq_fair() {
                            set_task_select_cpus();
                            select_idle_sibling() {
                              available_idle_cpu();
                            } /* select_idle_sibling */
                          } /* select_task_rq_fair */
                          ttwu_queue_wakelist();
                          _raw_spin_lock();
                          update_rq_clock() {
                            update_rq_clock_task() {
                              psi_account_irqtime();
                              update_irq_load_avg();
                            } /* update_rq_clock_task */
                          } /* update_rq_clock */
                          ttwu_do_activate() {
                            activate_task() {
                              enqueue_task_fair() {
                                enqueue_entity() {
                                  update_curr();
                                  __update_load_avg_se();
                                  __update_load_avg_cfs_rq();
                                  update_cfs_group();
                                  place_entity() {
                                    avg_vruntime();
                                  } /* place_entity */
                                  __enqueue_entity();
                                } /* enqueue_entity */
                                enqueue_entity() {
                                  update_curr();
                                  __update_load_avg_se();
                                  __update_load_avg_cfs_rq();
                                  update_cfs_group() {
                                    reweight_entity();
                                  } /* update_cfs_group */
                                  place_entity() {
                                    avg_vruntime();
                                    __calc_delta.constprop.0();
                                  } /* place_entity */
                                  __enqueue_entity();
                                } /* enqueue_entity */
                                enqueue_entity() {
                                  update_curr();
                                  __update_load_avg_se();
                                  __update_load_avg_cfs_rq();
                                  update_cfs_group() {
                                    reweight_entity();
                                  } /* update_cfs_group */
                                  place_entity() {
                                    avg_vruntime();
                                    __calc_delta.constprop.0();
                                  } /* place_entity */
                                  __enqueue_entity();
                                } /* enqueue_entity */
                                enqueue_entity() {
                                  update_curr();
                                  __update_load_avg_se();
                                  __update_load_avg_cfs_rq();
                                  update_cfs_group() {
                                    reweight_entity();
                                  } /* update_cfs_group */
                                  place_entity() {
                                    avg_vruntime();
                                    __calc_delta.constprop.0();
                                  } /* place_entity */
                                  __enqueue_entity();
                                } /* enqueue_entity */
                                hrtick_update();
                              } /* enqueue_task_fair */
                            } /* activate_task */
                            check_preempt_curr() {
                              resched_curr();
                            } /* check_preempt_curr */
                          } /* ttwu_do_activate */
                          raw_spin_rq_unlock();
                          _raw_spin_unlock_irqrestore();
                        } /* try_to_wake_up */
                      } /* default_wake_function */
                    } /* wake_bit_function */
                  } /* __wake_up_common */
                  _raw_spin_unlock_irqrestore();
                } /* wake_up_bit */
              } /* end_buffer_read_sync */
              bio_put() {
                bio_free() {
                  bio_uninit();
                  bvec_free();
                  mempool_free() {
                    mempool_free_slab() {
                      kmem_cache_free();
                    } /* mempool_free_slab */
                  } /* mempool_free */
                } /* bio_free */
              } /* bio_put */
            } /* end_bio_bh_io_sync */
          } /* bio_endio */
        } /* blk_update_request */
        add_disk_randomness() {
          add_timer_randomness() {
            _raw_spin_lock_irqsave();
            blake2s_update();
            blake2s_update() {
              blake2s_compress_generic();
            } /* blake2s_update */
            _raw_spin_unlock_irqrestore();
          } /* add_timer_randomness */
        } /* add_disk_randomness */
        sd_uninit_command [sd_mod]();
        ktime_get();
        blk_stat_add();
        update_io_ticks();
        dd_finish_request();
        blk_mq_free_request() {
          __rq_qos_done() {
            wbt_done();
          } /* __rq_qos_done */
          __blk_mq_free_request() {
            blk_mq_put_tag();
            blk_mq_put_tag();
            blk_queue_exit();
          } /* __blk_mq_free_request */
        } /* blk_mq_free_request */
        scsi_run_queue_async();
      } /* scsi_end_request */
    } /* scsi_io_completion */
  } /* scsi_finish_command */
} /* scsi_complete */
